Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

Biology grows on you.


devel / comp.arch / "valid bits" for registers

SubjectAuthor
* "valid bits" for registersThomas Koenig
+* Re: "valid bits" for registersMitchAlsup
|`* Re: "valid bits" for registersQuadibloc
| `- Re: "valid bits" for registersThomas Koenig
+* Re: "valid bits" for registersTerje Mathisen
|`* Re: "valid bits" for registersThomas Koenig
| +- Re: "valid bits" for registersQuadibloc
| `* Re: "valid bits" for registersIvan Godard
|  `* Re: "valid bits" for registersThomas Koenig
|   `* Re: "valid bits" for registersIvan Godard
|    `* Re: "valid bits" for registersThomas Koenig
|     +* Re: "valid bits" for registersIvan Godard
|     |`* Re: "valid bits" for registersStephen Fuld
|     | `- Re: "valid bits" for registersIvan Godard
|     +- Re: "valid bits" for registersMitchAlsup
|     `* Re: "valid bits" for registersThomas Koenig
|      +* Re: "valid bits" for registersMitchAlsup
|      |`* Re: "valid bits" for registersThomas Koenig
|      | `* Re: "valid bits" for registersMitchAlsup
|      |  `- Re: "valid bits" for registersThomas Koenig
|      `- Re: "valid bits" for registersTim Rentsch
+- Re: "valid bits" for registersQuadibloc
`* Re: "valid bits" for registersGuillaume
 +* Re: "valid bits" for registersMitchAlsup
 |`* Re: "valid bits" for registersGuillaume
 | +* Re: "valid bits" for registersMitchAlsup
 | |`- Re: "valid bits" for registersGuillaume
 | `- Re: "valid bits" for registersTerje Mathisen
 +- Re: "valid bits" for registersIvan Godard
 `* Re: "valid bits" for registersStephen Fuld
  `- Re: "valid bits" for registersGuillaume

Pages:12
"valid bits" for registers

<sa35cv$g52$1@newsreader4.netcologne.de>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: "valid bits" for registers
Date: Sat, 12 Jun 2021 20:28:15 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <sa35cv$g52$1@newsreader4.netcologne.de>
Injection-Date: Sat, 12 Jun 2021 20:28:15 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd6:26b3:0:7285:c2ff:fe6c:992d";
logging-data="16546"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Sat, 12 Jun 2021 20:28 UTC

The following assumes enough bits to encode it (which are always
rare), but I'd still like to float the idea.

Consider a "valid" bit associated with each register, which would
be set by loads and calculations using this as a target register,
and which could optionally be cleared by operations where its
value is used, or by a store. It should also be possible to
unset the valid bit on a register, for example on return from
a supervisor call or possibly from a function.

Accessing a register with unset valid bit could result in
an exception, or (less preferable) in a arbitrary value such
as 0xdeadbeef of IBM fame.

Advantages: There would be no need to write back the value
to the physical register file, saving effort (and possibly
making analysis easer).

Saving registers on function entry could be restricted on those
which are actually valid, the same would hold for a context switch.

Disadvantages: Extra bits needed in the instruction space
(obviously), added complexity.

Any thoughts on why this would be a good/bad idea? Been tried
in the past and didn't catch because... ?

Re: "valid bits" for registers

<fde7d9f8-aedd-4951-af74-5b485441ce8en@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:9504:: with SMTP id x4mr2821795qkd.235.1623532732090;
Sat, 12 Jun 2021 14:18:52 -0700 (PDT)
X-Received: by 2002:aca:650b:: with SMTP id m11mr6374646oim.99.1623532731914;
Sat, 12 Jun 2021 14:18:51 -0700 (PDT)
Path: i2pn2.org!i2pn.org!aioe.org!feeder1.feed.usenet.farm!feed.usenet.farm!news-out.netnews.com!news.alt.net!fdc3.netnews.com!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sat, 12 Jun 2021 14:18:51 -0700 (PDT)
In-Reply-To: <sa35cv$g52$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:854:b35b:9aab:ce33;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:854:b35b:9aab:ce33
References: <sa35cv$g52$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <fde7d9f8-aedd-4951-af74-5b485441ce8en@googlegroups.com>
Subject: Re: "valid bits" for registers
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 12 Jun 2021 21:18:52 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2724
 by: MitchAlsup - Sat, 12 Jun 2021 21:18 UTC

On Saturday, June 12, 2021 at 3:28:17 PM UTC-5, Thomas Koenig wrote:
> The following assumes enough bits to encode it (which are always
> rare), but I'd still like to float the idea.
>
> Consider a "valid" bit associated with each register, which would
> be set by loads and calculations using this as a target register,
> and which could optionally be cleared by operations where its
> value is used, or by a store. It should also be possible to
> unset the valid bit on a register, for example on return from
> a supervisor call or possibly from a function.
<
As long as the associated bit(s) are not visible in ISA, there is no
problem. Athlon used 4-bits on the floating point registers to help
keep track of what was in the register {x87, MMX, SSE,...}
>
> Accessing a register with unset valid bit could result in
> an exception, or (less preferable) in a arbitrary value such
> as 0xdeadbeef of IBM fame.
<
How do you differentiate "value has not arrived" from "value will
never arrive"
>
> Advantages: There would be no need to write back the value
> to the physical register file, saving effort (and possibly
> making analysis easer).
<
HW write elision is pretty easy.
>
> Saving registers on function entry could be restricted on those
> which are actually valid, the same would hold for a context switch.
<
Mostly small potatoes.
>
> Disadvantages: Extra bits needed in the instruction space
> (obviously), added complexity.
>
> Any thoughts on why this would be a good/bad idea? Been tried
> in the past and didn't catch because... ?

Re: "valid bits" for registers

<sa6qi0$a18$1@gioia.aioe.org>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!Z/OnjRNZ74xzNAVdC5cKTg.user.gioia.aioe.org.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Mon, 14 Jun 2021 07:47:44 +0200
Organization: Aioe.org NNTP Server
Lines: 38
Message-ID: <sa6qi0$a18$1@gioia.aioe.org>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
NNTP-Posting-Host: Z/OnjRNZ74xzNAVdC5cKTg.user.gioia.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Complaints-To: abuse@aioe.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101
Firefox/60.0 SeaMonkey/2.53.7.1
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Mon, 14 Jun 2021 05:47 UTC

Thomas Koenig wrote:
> The following assumes enough bits to encode it (which are always
> rare), but I'd still like to float the idea.
>
> Consider a "valid" bit associated with each register, which would
> be set by loads and calculations using this as a target register,
> and which could optionally be cleared by operations where its
> value is used, or by a store. It should also be possible to
> unset the valid bit on a register, for example on return from
> a supervisor call or possibly from a function.
>
> Accessing a register with unset valid bit could result in
> an exception, or (less preferable) in a arbitrary value such
> as 0xdeadbeef of IBM fame.
>
> Advantages: There would be no need to write back the value
> to the physical register file, saving effort (and possibly
> making analysis easer).
>
> Saving registers on function entry could be restricted on those
> which are actually valid, the same would hold for a context switch.
>
> Disadvantages: Extra bits needed in the instruction space
> (obviously), added complexity.
>
> Any thoughts on why this would be a good/bad idea? Been tried
> in the past and didn't catch because... ?
>
You have looked at Mill I assume/hope?

A belt location has several metadata bits associated with it, including
both None (i.e. similar to a DB NULL) and NaR (which is a generalized NaN).

Terje

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

Re: "valid bits" for registers

<sa6rps$uiu$1@newsreader4.netcologne.de>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Mon, 14 Jun 2021 06:09:00 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <sa6rps$uiu$1@newsreader4.netcologne.de>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<sa6qi0$a18$1@gioia.aioe.org>
Injection-Date: Mon, 14 Jun 2021 06:09:00 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd6:26b3:0:7285:c2ff:fe6c:992d";
logging-data="31326"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Mon, 14 Jun 2021 06:09 UTC

Terje Mathisen <terje.mathisen@tmsw.no> schrieb:
> Thomas Koenig wrote:
>> The following assumes enough bits to encode it (which are always
>> rare), but I'd still like to float the idea.
>>
>> Consider a "valid" bit associated with each register, which would
>> be set by loads and calculations using this as a target register,
>> and which could optionally be cleared by operations where its
>> value is used, or by a store. It should also be possible to
>> unset the valid bit on a register, for example on return from
>> a supervisor call or possibly from a function.
>>
>> Accessing a register with unset valid bit could result in
>> an exception, or (less preferable) in a arbitrary value such
>> as 0xdeadbeef of IBM fame.
>>
>> Advantages: There would be no need to write back the value
>> to the physical register file, saving effort (and possibly
>> making analysis easer).
>>
>> Saving registers on function entry could be restricted on those
>> which are actually valid, the same would hold for a context switch.
>>
>> Disadvantages: Extra bits needed in the instruction space
>> (obviously), added complexity.
>>
>> Any thoughts on why this would be a good/bad idea? Been tried
>> in the past and didn't catch because... ?
>>
> You have looked at Mill I assume/hope?

I would have liked to, but the documents I have been able to find
were very sparse - a humungous instruction list and some very
general remarks was all I found.

Is there more info in a readily available format? (And I don't
consider an hour-long talk on Youtube to be "readily available" :-)

Re: "valid bits" for registers

<dd6445d0-6bfd-4edb-b8f0-326bb0990c45n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ad4:4c0c:: with SMTP id bz12mr16766933qvb.21.1623653058232; Sun, 13 Jun 2021 23:44:18 -0700 (PDT)
X-Received: by 2002:a05:6830:1d1:: with SMTP id r17mr12646464ota.5.1623653058028; Sun, 13 Jun 2021 23:44:18 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!feeder1.feed.usenet.farm!feed.usenet.farm!tr3.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sun, 13 Jun 2021 23:44:17 -0700 (PDT)
In-Reply-To: <fde7d9f8-aedd-4951-af74-5b485441ce8en@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:49ad:8998:dba7:ae90; posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:49ad:8998:dba7:ae90
References: <sa35cv$g52$1@newsreader4.netcologne.de> <fde7d9f8-aedd-4951-af74-5b485441ce8en@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <dd6445d0-6bfd-4edb-b8f0-326bb0990c45n@googlegroups.com>
Subject: Re: "valid bits" for registers
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Mon, 14 Jun 2021 06:44:18 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 18
 by: Quadibloc - Mon, 14 Jun 2021 06:44 UTC

On Saturday, June 12, 2021 at 3:18:53 PM UTC-6, MitchAlsup wrote:

> How do you differentiate "value has not arrived" from "value will
> never arrive"

This of course depends on what the valid bits are used for.

But assuming a conventional architecture, the valid bits add no
new problem. A valid bit is meant to tell the user that 'you are
accessing an uninitialized register'.

In an architecture without valid bits, which is pipelined, interlocks
prevent an instruction using a value in a register that is the result of
a calculation... using the wrong value, because the calculation isn't
finished yet. If the 'valid bit' is meant strictly as a way of dealing with
uninitialized values, its presence won't mean that interlocks are in
any way dispensed with.

John Savard

Re: "valid bits" for registers

<be32473e-57cd-4f57-aa05-ffc3f48714afn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:2cc3:: with SMTP id s186mr14754137qkh.330.1623653144823;
Sun, 13 Jun 2021 23:45:44 -0700 (PDT)
X-Received: by 2002:a9d:4f18:: with SMTP id d24mr11936437otl.16.1623653144623;
Sun, 13 Jun 2021 23:45:44 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sun, 13 Jun 2021 23:45:44 -0700 (PDT)
In-Reply-To: <sa35cv$g52$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:49ad:8998:dba7:ae90;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:49ad:8998:dba7:ae90
References: <sa35cv$g52$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <be32473e-57cd-4f57-aa05-ffc3f48714afn@googlegroups.com>
Subject: Re: "valid bits" for registers
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Mon, 14 Jun 2021 06:45:44 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Mon, 14 Jun 2021 06:45 UTC

On Saturday, June 12, 2021 at 2:28:17 PM UTC-6, Thomas Koenig wrote:

> and which could optionally be cleared by operations where its
> value is used, or by a store.

And why on Earth would anyone want to do _that_, since these things
wouldn't make the value in the register invalid, or the register
uninitialized?

John Savard

Re: "valid bits" for registers

<4f062197-deb1-4695-ae32-f5dde04dbdf3n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:2148:: with SMTP id m8mr14906042qkm.190.1623653269069;
Sun, 13 Jun 2021 23:47:49 -0700 (PDT)
X-Received: by 2002:a9d:3f0:: with SMTP id f103mr4302860otf.182.1623653268874;
Sun, 13 Jun 2021 23:47:48 -0700 (PDT)
Path: i2pn2.org!i2pn.org!news.niel.me!usenet.pasdenom.info!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sun, 13 Jun 2021 23:47:48 -0700 (PDT)
In-Reply-To: <sa6rps$uiu$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:49ad:8998:dba7:ae90;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:49ad:8998:dba7:ae90
References: <sa35cv$g52$1@newsreader4.netcologne.de> <sa6qi0$a18$1@gioia.aioe.org>
<sa6rps$uiu$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <4f062197-deb1-4695-ae32-f5dde04dbdf3n@googlegroups.com>
Subject: Re: "valid bits" for registers
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Mon, 14 Jun 2021 06:47:49 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Mon, 14 Jun 2021 06:47 UTC

On Monday, June 14, 2021 at 12:09:02 AM UTC-6, Thomas Koenig wrote:

> Is there more info in a readily available format? (And I don't
> consider an hour-long talk on Youtube to be "readily available" :-)

Ah. I was going to say there were a bunch of videos in which the
intent of the architecture was explained, but I see you've heard of
them.

However, those videos were discussed in this group, but of course,
*now* those discussions aren't that easily accessible.

John Savard

Re: "valid bits" for registers

<sa6v1m$h1$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Mon, 14 Jun 2021 00:04:21 -0700
Organization: A noiseless patient Spider
Lines: 48
Message-ID: <sa6v1m$h1$1@dont-email.me>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<sa6qi0$a18$1@gioia.aioe.org> <sa6rps$uiu$1@newsreader4.netcologne.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 14 Jun 2021 07:04:22 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="8502820e329019d05f984e551f3a33dd";
logging-data="545"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18Zw1ttWeFrF83dNKVWJVom"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:1BT9s6ldot87hLZzdzjIB370kwU=
In-Reply-To: <sa6rps$uiu$1@newsreader4.netcologne.de>
Content-Language: en-US
 by: Ivan Godard - Mon, 14 Jun 2021 07:04 UTC

On 6/13/2021 11:09 PM, Thomas Koenig wrote:
> Terje Mathisen <terje.mathisen@tmsw.no> schrieb:
>> Thomas Koenig wrote:
>>> The following assumes enough bits to encode it (which are always
>>> rare), but I'd still like to float the idea.
>>>
>>> Consider a "valid" bit associated with each register, which would
>>> be set by loads and calculations using this as a target register,
>>> and which could optionally be cleared by operations where its
>>> value is used, or by a store. It should also be possible to
>>> unset the valid bit on a register, for example on return from
>>> a supervisor call or possibly from a function.
>>>
>>> Accessing a register with unset valid bit could result in
>>> an exception, or (less preferable) in a arbitrary value such
>>> as 0xdeadbeef of IBM fame.
>>>
>>> Advantages: There would be no need to write back the value
>>> to the physical register file, saving effort (and possibly
>>> making analysis easer).
>>>
>>> Saving registers on function entry could be restricted on those
>>> which are actually valid, the same would hold for a context switch.
>>>
>>> Disadvantages: Extra bits needed in the instruction space
>>> (obviously), added complexity.
>>>
>>> Any thoughts on why this would be a good/bad idea? Been tried
>>> in the past and didn't catch because... ?
>>>
>> You have looked at Mill I assume/hope?
>
> I would have liked to, but the documents I have been able to find
> were very sparse - a humungous instruction list and some very
> general remarks was all I found.
>
> Is there more info in a readily available format? (And I don't
> consider an hour-long talk on Youtube to be "readily available" :-)
>

I share your distaste for videos that amount to someone reading the
slides that you could read yourself only faster. However, video permits
animation that text does not, and for some things (such as the Mill)
seeing it actually work gives much more insight than reading a
description of how it works. YMMV.

Well BTAIM, you have human doc available. What kind of presentation
would you consider "readily available"?

Re: "valid bits" for registers

<sa7vkj$mff$1@newsreader4.netcologne.de>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Mon, 14 Jun 2021 16:20:35 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <sa7vkj$mff$1@newsreader4.netcologne.de>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<fde7d9f8-aedd-4951-af74-5b485441ce8en@googlegroups.com>
<dd6445d0-6bfd-4edb-b8f0-326bb0990c45n@googlegroups.com>
Injection-Date: Mon, 14 Jun 2021 16:20:35 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd6:26b3:0:7285:c2ff:fe6c:992d";
logging-data="23023"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Mon, 14 Jun 2021 16:20 UTC

Quadibloc <jsavard@ecn.ab.ca> schrieb:
> On Saturday, June 12, 2021 at 3:18:53 PM UTC-6, MitchAlsup wrote:
>
>> How do you differentiate "value has not arrived" from "value will
>> never arrive"
>
> This of course depends on what the valid bits are used for.
>
> But assuming a conventional architecture, the valid bits add no
> new problem. A valid bit is meant to tell the user that 'you are
> accessing an uninitialized register'.

Or accessing a register that has been used by a called
function.

Another thought is that there that the value can be eliminated
from the register value.

Re: "valid bits" for registers

<sa822v$ois$1@newsreader4.netcologne.de>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Mon, 14 Jun 2021 17:02:23 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <sa822v$ois$1@newsreader4.netcologne.de>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<sa6qi0$a18$1@gioia.aioe.org> <sa6rps$uiu$1@newsreader4.netcologne.de>
<sa6v1m$h1$1@dont-email.me>
Injection-Date: Mon, 14 Jun 2021 17:02:23 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd6:26b3:0:7285:c2ff:fe6c:992d";
logging-data="25180"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Mon, 14 Jun 2021 17:02 UTC

Ivan Godard <ivan@millcomputing.com> schrieb:

> Well BTAIM, you have human doc available. What kind of presentation
> would you consider "readily available"?

First, thanks for the offer.

Some sort of document that it is possible to browse through without
having to go through more than 20 hours of videos would be
great - some sort of introductory text (or presentation) about the
principles, what instructions look like, how they are processed,
what serves as registers, what metadata there is and many other
points that you and others have alluded to on this group.

Something like Mitch's document about the My 66000 operations
(which really explained the special points about his architecture
well) or even the overview chapters in the POWER ISA, for
example, would be great.

I come at ISAs from a compiler perspective - I like to see how
code (preferably for my personal favorite, modern Fortran) is and
should be translated, and how well this works. I would also like
to be able to read assembler code, and see how well this works,
or where the compiler should be improved. For this, I need some
kind of mental model of what happens in a CPU. And, of course,
I am all in favor of ISAs which allow efficient operation.

So... anything shorter than the vidos available? I don't know
how self-explanatory the slides from your talks are, maybe
these could be published?

Re: "valid bits" for registers

<sa84mc$6em$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Mon, 14 Jun 2021 10:46:51 -0700
Organization: A noiseless patient Spider
Lines: 77
Message-ID: <sa84mc$6em$1@dont-email.me>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<sa6qi0$a18$1@gioia.aioe.org> <sa6rps$uiu$1@newsreader4.netcologne.de>
<sa6v1m$h1$1@dont-email.me> <sa822v$ois$1@newsreader4.netcologne.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 14 Jun 2021 17:46:52 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="8502820e329019d05f984e551f3a33dd";
logging-data="6614"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18FFHOyMgYS8bekW1w3baa1"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:oWQE4MT+POwu8JK3WXwEYN+4L1c=
In-Reply-To: <sa822v$ois$1@newsreader4.netcologne.de>
Content-Language: en-US
 by: Ivan Godard - Mon, 14 Jun 2021 17:46 UTC

On 6/14/2021 10:02 AM, Thomas Koenig wrote:
> Ivan Godard <ivan@millcomputing.com> schrieb:
>
>> Well BTAIM, you have human doc available. What kind of presentation
>> would you consider "readily available"?
>
> First, thanks for the offer.
>
> Some sort of document that it is possible to browse through without
> having to go through more than 20 hours of videos would be
> great - some sort of introductory text (or presentation) about the
> principles, what instructions look like, how they are processed,
> what serves as registers, what metadata there is and many other
> points that you and others have alluded to on this group.
>
> Something like Mitch's document about the My 66000 operations
> (which really explained the special points about his architecture
> well) or even the overview chapters in the POWER ISA, for
> example, would be great.
>
> I come at ISAs from a compiler perspective - I like to see how
> code (preferably for my personal favorite, modern Fortran) is and
> should be translated, and how well this works. I would also like
> to be able to read assembler code, and see how well this works,
> or where the compiler should be improved. For this, I need some
> kind of mental model of what happens in a CPU. And, of course,
> I am all in favor of ISAs which allow efficient operation.
>
> So... anything shorter than the vidos available? I don't know
> how self-explanatory the slides from your talks are, maybe
> these could be published?
>

The slides are and have always been published; you will find them next
to the videos on millcomputing.com. You need real Powerpoint; the clones
choke on animations (or at least they used to; try and see if you want).

An introductory Mill book would be very valuable I agree. There is a
great dearth of tech writers though, especially those who will work
sweat equity. If you would like to help fix this problem please send me
a note to ivan at the millcomputing site and describe your prior
experience writing such books.

For Fortran, you compile with flang into LLVM. The resulting IR is the
same as you get from C or C++. As a practical matter, to understand the
code gen you must learn to read LLVM IR; it's well documented and you
can run all the tests you want. The Mill itself is an ISA, and doesn't
care about the source language used so long as LLVM will eat it. The
Mill tool chain has made no front-end or middle-end modifications to
standard LLVM. We do not yet support gcc or MS.

Not much I can do about the plenitude of instructions; there are over a
thousand models, because we use an attributed definition where most
other docs just define the major opcodes and leave the attributes to the
fine print. Still, it is true that the Mill is far more orthogonal than
most, which leads to more instructions but simpler hardware.

For example, all operations that can cause integer overflow come in four
flavors of overflow handling behavior. Perhaps you would prefer to see
one integer add page that mentions a two bit overflow field in passing.
Our doc uses four pages, one for each, because they are intended for use
by people looking up a hex pattern from a code dump, not for casual
browsers. Yes, this gets out of hand for you what with all the FP
instructions that come in every rounding mode, but you are not the
target audience.

However, it's not the instruction set that distinguishes a Mill;
although there are lots of changes rung on the basics, there are very
few instructions that you wouldn't recognize in the next RISC off a bus.
What is different is the macro architecture. We have found that
explaining temporal addressing, split-stream encoding, virtual zero,
phasing... the list is not short - requires pictures, and specifically
animations. So look at the slides. My benign commentary in the videos
may be helpful if you need more. If that fails too then I'm here for
concrete questions.

Ivan

Re: "valid bits" for registers

<sa9t38$uig$1@newsreader4.netcologne.de>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Tue, 15 Jun 2021 09:49:28 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <sa9t38$uig$1@newsreader4.netcologne.de>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<sa6qi0$a18$1@gioia.aioe.org> <sa6rps$uiu$1@newsreader4.netcologne.de>
<sa6v1m$h1$1@dont-email.me> <sa822v$ois$1@newsreader4.netcologne.de>
<sa84mc$6em$1@dont-email.me>
Injection-Date: Tue, 15 Jun 2021 09:49:28 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd6:26b3:0:7285:c2ff:fe6c:992d";
logging-data="31312"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Tue, 15 Jun 2021 09:49 UTC

Ivan Godard <ivan@millcomputing.com> schrieb:
> On 6/14/2021 10:02 AM, Thomas Koenig wrote:
>> Ivan Godard <ivan@millcomputing.com> schrieb:
>>
>>> Well BTAIM, you have human doc available. What kind of presentation
>>> would you consider "readily available"?
>>
>> First, thanks for the offer.
>>
>> Some sort of document that it is possible to browse through without
>> having to go through more than 20 hours of videos would be
>> great - some sort of introductory text (or presentation) about the
>> principles, what instructions look like, how they are processed,
>> what serves as registers, what metadata there is and many other
>> points that you and others have alluded to on this group.
>>
>> Something like Mitch's document about the My 66000 operations
>> (which really explained the special points about his architecture
>> well) or even the overview chapters in the POWER ISA, for
>> example, would be great.
>>
>> I come at ISAs from a compiler perspective - I like to see how
>> code (preferably for my personal favorite, modern Fortran) is and
>> should be translated, and how well this works. I would also like
>> to be able to read assembler code, and see how well this works,
>> or where the compiler should be improved. For this, I need some
>> kind of mental model of what happens in a CPU. And, of course,
>> I am all in favor of ISAs which allow efficient operation.
>>
>> So... anything shorter than the vidos available? I don't know
>> how self-explanatory the slides from your talks are, maybe
>> these could be published?
>>
>
> The slides are and have always been published; you will find them next
> to the videos on millcomputing.com. You need real Powerpoint; the clones
> choke on animations (or at least they used to; try and see if you want).
>
> An introductory Mill book would be very valuable I agree.

I don't think it would have to be a whole book; some sort of
technical report or white paper would be quite helpful already.

>There is a
> great dearth of tech writers though, especially those who will work
> sweat equity. If you would like to help fix this problem please send me
> a note to ivan at the millcomputing site and describe your prior
> experience writing such books.

Thanks, but I am a technical writer (I wrote a couple of chapters
for a couple of books, and some patents, where the focus far less on
legibility). I also don't really have a lot of time due to a
full-time day job :-)

> For Fortran, you compile with flang into LLVM. The resulting IR is the
> same as you get from C or C++.

Sure.

The interesting question is how well the IR matches the semantics
of the language in question, and the semantics of the machine language.

For example, Fortran has array expressions which need to be
translated into the IR. If the IR does not have arrays as
first-class citizens, this requires scalarization, i.e. translation
into scalar loops, which is a) hairy and b) prone to add additional
restrictions which Fortran language definition does not have: it
needs to chose an iteration order or loop ordering, which may not
be optimum and which the middle end (which is usually based on
some sort of C-like model) would need to figure out and correct.

This is the reason, for example, why I added loop interchange to
FORALL and DO CONCURRENT in gortran, because the gcc middle end
didn't get it right.

>As a practical matter, to understand the
> code gen you must learn to read LLVM IR; it's well documented and you
> can run all the tests you want. The Mill itself is an ISA, and doesn't
> care about the source language used so long as LLVM will eat it. The
> Mill tool chain has made no front-end or middle-end modifications to
> standard LLVM.

And the question then is... how information much is lost along that way?

My usual way is to look at source code and assembly output,
and see what goes wrong. If the assembler is readable
(and I have a mental model of what the processor does) then
misoptimizations (or wrong code) can be blindingly obvious,
such as in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100622
(which we discussed here a bit ago, and which has been fixed in
the meantime on gcc trunk by deletion of code, always the best way).

There are also things where an ISA matches very well to language
construct. For example, for My 66000, I would stronlgy expect

WHERE (a>0)
a = a + 3
ELSEWHERE
a = a + b
END WHERE

to be translated into a VEC / LOOP pair with a predicate inside.
If not, I would open a missed-optimization bug report.

> Not much I can do about the plenitude of instructions; there are over a
> thousand models, because we use an attributed definition where most
> other docs just define the major opcodes and leave the attributes to the
> fine print. Still, it is true that the Mill is far more orthogonal than
> most, which leads to more instructions but simpler hardware.

I don't mind many instructions (or I would never look at POWER in my
life :-)

> For example, all operations that can cause integer overflow come in four
> flavors of overflow handling behavior. Perhaps you would prefer to see
> one integer add page that mentions a two bit overflow field in passing.
> Our doc uses four pages, one for each, because they are intended for use
> by people looking up a hex pattern from a code dump, not for casual
> browsers.

Is that information available somewhere? What I have found so far is
http://millcomputing.com/wiki/Instruction_Set but that is not enough
to get a grip on what happens, and nothing I found specifically
mentions encodings.

[...]

> However, it's not the instruction set that distinguishes a Mill;
> although there are lots of changes rung on the basics, there are very
> few instructions that you wouldn't recognize in the next RISC off a bus.
> What is different is the macro architecture. We have found that
> explaining temporal addressing, split-stream encoding, virtual zero,
> phasing... the list is not short - requires pictures, and specifically
> animations. So look at the slides. My benign commentary in the videos
> may be helpful if you need more. If that fails too then I'm here for
> concrete questions.

I'll look at it, and see if it is enough to form that mental
picture. Thanks!

Re: "valid bits" for registers

<saa6fn$7db$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Tue, 15 Jun 2021 05:29:43 -0700
Organization: A noiseless patient Spider
Lines: 169
Message-ID: <saa6fn$7db$1@dont-email.me>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<sa6qi0$a18$1@gioia.aioe.org> <sa6rps$uiu$1@newsreader4.netcologne.de>
<sa6v1m$h1$1@dont-email.me> <sa822v$ois$1@newsreader4.netcologne.de>
<sa84mc$6em$1@dont-email.me> <sa9t38$uig$1@newsreader4.netcologne.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 15 Jun 2021 12:29:43 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="28e4c40b8066a433dfec7c133e0d2392";
logging-data="7595"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19upwRhPdCh6TonGHA6cJa7"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:UVniiO6jrZVokUYHHVLQ/xX2x4Y=
In-Reply-To: <sa9t38$uig$1@newsreader4.netcologne.de>
Content-Language: en-US
 by: Ivan Godard - Tue, 15 Jun 2021 12:29 UTC

On 6/15/2021 2:49 AM, Thomas Koenig wrote:
> Ivan Godard <ivan@millcomputing.com> schrieb:
>> On 6/14/2021 10:02 AM, Thomas Koenig wrote:
>>> Ivan Godard <ivan@millcomputing.com> schrieb:
>>>
>>>> Well BTAIM, you have human doc available. What kind of presentation
>>>> would you consider "readily available"?
>>>
>>> First, thanks for the offer.
>>>
>>> Some sort of document that it is possible to browse through without
>>> having to go through more than 20 hours of videos would be
>>> great - some sort of introductory text (or presentation) about the
>>> principles, what instructions look like, how they are processed,
>>> what serves as registers, what metadata there is and many other
>>> points that you and others have alluded to on this group.
>>>
>>> Something like Mitch's document about the My 66000 operations
>>> (which really explained the special points about his architecture
>>> well) or even the overview chapters in the POWER ISA, for
>>> example, would be great.
>>>
>>> I come at ISAs from a compiler perspective - I like to see how
>>> code (preferably for my personal favorite, modern Fortran) is and
>>> should be translated, and how well this works. I would also like
>>> to be able to read assembler code, and see how well this works,
>>> or where the compiler should be improved. For this, I need some
>>> kind of mental model of what happens in a CPU. And, of course,
>>> I am all in favor of ISAs which allow efficient operation.
>>>
>>> So... anything shorter than the vidos available? I don't know
>>> how self-explanatory the slides from your talks are, maybe
>>> these could be published?
>>>
>>
>> The slides are and have always been published; you will find them next
>> to the videos on millcomputing.com. You need real Powerpoint; the clones
>> choke on animations (or at least they used to; try and see if you want).
>>
>> An introductory Mill book would be very valuable I agree.
>
> I don't think it would have to be a whole book; some sort of
> technical report or white paper would be quite helpful already.
>
>> There is a
>> great dearth of tech writers though, especially those who will work
>> sweat equity. If you would like to help fix this problem please send me
>> a note to ivan at the millcomputing site and describe your prior
>> experience writing such books.
>
> Thanks, but I am a technical writer (I wrote a couple of chapters
> for a couple of books, and some patents, where the focus far less on
> legibility). I also don't really have a lot of time due to a
> full-time day job :-)
>
>> For Fortran, you compile with flang into LLVM. The resulting IR is the
>> same as you get from C or C++.
>
> Sure.
>
> The interesting question is how well the IR matches the semantics
> of the language in question, and the semantics of the machine language.
>
> For example, Fortran has array expressions which need to be
> translated into the IR. If the IR does not have arrays as
> first-class citizens, this requires scalarization, i.e. translation
> into scalar loops, which is a) hairy and b) prone to add additional
> restrictions which Fortran language definition does not have: it
> needs to chose an iteration order or loop ordering, which may not
> be optimum and which the middle end (which is usually based on
> some sort of C-like model) would need to figure out and correct.
>
> This is the reason, for example, why I added loop interchange to
> FORALL and DO CONCURRENT in gortran, because the gcc middle end
> didn't get it right.

And I'm sure your changes were beneficial, but they are all above the
ISA level. We take what LLVM gives us; if the user isn't satisfied with
LLVM then it's not for us to fix. If they persuade LLVM to fix their
issue, and the fix forces a change to the IR, then our software will
track that change.

>> As a practical matter, to understand the
>> code gen you must learn to read LLVM IR; it's well documented and you
>> can run all the tests you want. The Mill itself is an ISA, and doesn't
>> care about the source language used so long as LLVM will eat it. The
>> Mill tool chain has made no front-end or middle-end modifications to
>> standard LLVM.
>
> And the question then is... how information much is lost along that way?
>
> My usual way is to look at source code and assembly output,
> and see what goes wrong. If the assembler is readable
> (and I have a mental model of what the processor does) then
> misoptimizations (or wrong code) can be blindingly obvious,
> such as in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100622
> (which we discussed here a bit ago, and which has been fixed in
> the meantime on gcc trunk by deletion of code, always the best way).

The report you cite is for QOI, not architecture. In our pre-alpha state
we don't need QOI reports; we generate more than enough ourselves :-)

> There are also things where an ISA matches very well to language
> construct. For example, for My 66000, I would stronlgy expect
>
> WHERE (a>0)
> a = a + 3
> ELSEWHERE
> a = a + b
> END WHERE
>
> to be translated into a VEC / LOOP pair with a predicate inside.
> If not, I would open a missed-optimization bug report.
>
>> Not much I can do about the plenitude of instructions; there are over a
>> thousand models, because we use an attributed definition where most
>> other docs just define the major opcodes and leave the attributes to the
>> fine print. Still, it is true that the Mill is far more orthogonal than
>> most, which leads to more instructions but simpler hardware.
>
> I don't mind many instructions (or I would never look at POWER in my
> life :-)
>
>> For example, all operations that can cause integer overflow come in four
>> flavors of overflow handling behavior. Perhaps you would prefer to see
>> one integer add page that mentions a two bit overflow field in passing.
>> Our doc uses four pages, one for each, because they are intended for use
>> by people looking up a hex pattern from a code dump, not for casual
>> browsers.
>
> Is that information available somewhere? What I have found so far is
> http://millcomputing.com/wiki/Instruction_Set but that is not enough
> to get a grip on what happens, and nothing I found specifically
> mentions encodings.
>
> [...]

Encodings are mechanically generated and differ for each slot of each
family member. During development the member configurations change
frequently, which can completely alter the encoding. This makes a
traditional ISA book possible but unwieldy. Rather than explode the page
count by a factor of a hundred or so, the pages you looked at omit the
(immediately out of date) binary encoding and show only the attributes.

The mutability will of course drop off as we get closer to physical
fabrication, but the context dependency of the binary encoding will
persist; to interpret a bit pattern you will have to know where the
instruction came from.

The whole approach is currently being reworked to improve the human
factors involved; this may result in an interactive tool instead of a
static book, but that's not settled. As a consequence of the way our
development process works, I have no idea when that rework will be done
and made available. Please be patient.

>> However, it's not the instruction set that distinguishes a Mill;
>> although there are lots of changes rung on the basics, there are very
>> few instructions that you wouldn't recognize in the next RISC off a bus.
>> What is different is the macro architecture. We have found that
>> explaining temporal addressing, split-stream encoding, virtual zero,
>> phasing... the list is not short - requires pictures, and specifically
>> animations. So look at the slides. My benign commentary in the videos
>> may be helpful if you need more. If that fails too then I'm here for
>> concrete questions.
>
> I'll look at it, and see if it is enough to form that mental
> picture. Thanks!
>

Re: "valid bits" for registers

<saai3t$u7a$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: sfu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Tue, 15 Jun 2021 08:48:12 -0700
Organization: A noiseless patient Spider
Lines: 157
Message-ID: <saai3t$u7a$1@dont-email.me>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<sa6qi0$a18$1@gioia.aioe.org> <sa6rps$uiu$1@newsreader4.netcologne.de>
<sa6v1m$h1$1@dont-email.me> <sa822v$ois$1@newsreader4.netcologne.de>
<sa84mc$6em$1@dont-email.me> <sa9t38$uig$1@newsreader4.netcologne.de>
<saa6fn$7db$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 15 Jun 2021 15:48:14 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="ceb85a4ff503f47c2330e8ee85c5cbe0";
logging-data="30954"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/dxBK3CYQeHWCabFDNjNrYp98ChOnBnw4="
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:40OeSZ98gdsGLMBnlRKdZn+aV5U=
In-Reply-To: <saa6fn$7db$1@dont-email.me>
Content-Language: en-US
 by: Stephen Fuld - Tue, 15 Jun 2021 15:48 UTC

On 6/15/2021 5:29 AM, Ivan Godard wrote:
> On 6/15/2021 2:49 AM, Thomas Koenig wrote:
>> Ivan Godard <ivan@millcomputing.com> schrieb:
>>> On 6/14/2021 10:02 AM, Thomas Koenig wrote:
>>>> Ivan Godard <ivan@millcomputing.com> schrieb:
>>>>
>>>>> Well BTAIM, you have human doc available. What kind of presentation
>>>>> would you consider "readily available"?
>>>>
>>>> First, thanks for the offer.
>>>>
>>>> Some sort of document that it is possible to browse through without
>>>> having to go through more than 20 hours of videos would be
>>>> great - some sort of introductory text (or presentation) about the
>>>> principles, what instructions look like, how they are processed,
>>>> what serves as registers, what metadata there is and many other
>>>> points that you and others have alluded to on this group.
>>>>
>>>> Something like Mitch's document about the My 66000 operations
>>>> (which really explained the special points about his architecture
>>>> well) or even the overview chapters in the POWER ISA, for
>>>> example, would be great.
>>>>
>>>> I come at ISAs from a compiler perspective - I like to see how
>>>> code (preferably for my personal favorite, modern Fortran) is and
>>>> should be translated, and how well this works.  I would also like
>>>> to be able to read assembler code, and see how well this works,
>>>> or where the compiler should be improved.  For this, I need some
>>>> kind of mental model of what happens in a CPU.  And, of course,
>>>> I am all in favor of ISAs which allow efficient operation.
>>>>
>>>> So... anything shorter than the vidos available?  I don't know
>>>> how self-explanatory the slides from your talks are, maybe
>>>> these could be published?
>>>>
>>>
>>> The slides are and have always been published; you will find them next
>>> to the videos on millcomputing.com. You need real Powerpoint; the clones
>>> choke on animations (or at least they used to; try and see if you want).
>>>
>>> An introductory Mill book would be very valuable I agree.
>>
>> I don't think it would have to be a whole book; some sort of
>> technical report or white paper would be quite helpful already.
>>
>>> There is a
>>> great dearth of tech writers though, especially those who will work
>>> sweat equity. If you would like to help fix this problem please send me
>>> a note to ivan at the millcomputing site and describe your prior
>>> experience writing such books.
>>
>> Thanks, but I am a technical writer (I wrote a couple of chapters
>> for a couple of books, and some patents, where the focus far less on
>> legibility).  I also don't really have a lot of time due to a
>> full-time day job :-)
>>
>>> For Fortran, you compile with flang into LLVM. The resulting IR is the
>>> same as you get from C or C++.
>>
>> Sure.
>>
>> The interesting question is how well the IR matches the semantics
>> of the language in question, and the semantics of the machine language.
>>
>> For example, Fortran has array expressions which need to be
>> translated into the IR.  If the IR does not have arrays as
>> first-class citizens, this requires scalarization, i.e. translation
>> into scalar loops, which is a) hairy and b) prone to add additional
>> restrictions which Fortran language definition does not have: it
>> needs to chose an iteration order or loop ordering, which may not
>> be optimum and which the middle end (which is usually based on
>> some sort of C-like model) would need to figure out and correct.
>>
>> This is the reason, for example, why I added loop interchange to
>> FORALL and DO CONCURRENT in gortran, because the gcc middle end
>> didn't get it right.
>
> And I'm sure your changes were beneficial, but they are all above the
> ISA level. We take what LLVM gives us; if the user isn't satisfied with
> LLVM then it's not for us to fix. If they persuade LLVM to fix their
> issue, and the fix forces a change to the IR, then our software will
> track that change.
>
>>> As a practical matter, to understand the
>>> code gen you must learn to read LLVM IR; it's well documented and you
>>> can run all the tests you want. The Mill itself is an ISA, and doesn't
>>> care about the source language used so long as LLVM will eat it. The
>>> Mill tool chain has made no front-end or middle-end modifications to
>>> standard LLVM.
>>
>> And the question then is... how information much is lost along that way?
>>
>> My usual way is to look at source code and assembly output,
>> and see what goes wrong.  If the assembler is readable
>> (and I have a mental model of what the processor does) then
>> misoptimizations (or wrong code) can be blindingly obvious,
>> such as in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100622
>> (which we discussed here a bit ago, and which has been fixed in
>> the meantime on gcc trunk by deletion of code, always the best way).
>
> The report you cite is for QOI, not architecture. In our pre-alpha state
> we don't need QOI reports; we generate more than enough ourselves :-)
>
>> There are also things where an ISA matches very well to language
>> construct.  For example, for My 66000, I would stronlgy expect
>>
>>     WHERE (a>0)
>>       a = a + 3
>>     ELSEWHERE
>>       a = a + b
>>     END WHERE
>>
>> to be translated into a VEC / LOOP pair with a predicate inside.
>> If not, I would open a missed-optimization bug report.
>>
>>> Not much I can do about the plenitude of instructions; there are over a
>>> thousand models, because we use an attributed definition where most
>>> other docs just define the major opcodes and leave the attributes to the
>>> fine print. Still, it is true that the Mill is far more orthogonal than
>>> most, which leads to more instructions but simpler hardware.
>>
>> I don't mind many instructions (or I would never look at POWER in my
>> life :-)
>>
>>> For example, all operations that can cause integer overflow come in four
>>> flavors of overflow handling behavior. Perhaps you would prefer to see
>>> one integer add page that mentions a two bit overflow field in passing.
>>> Our doc uses four pages, one for each, because they are intended for use
>>> by people looking up a hex pattern from a code dump, not for casual
>>> browsers.
>>
>> Is that information available somewhere?  What I have found so far is
>> http://millcomputing.com/wiki/Instruction_Set but that is not enough
>> to get a grip on what happens, and nothing I found specifically
>> mentions encodings.
>>
>> [...]
>
> Encodings are mechanically generated and differ for each slot of each
> family member. During development the member configurations change
> frequently, which can completely alter the encoding. This makes a
> traditional ISA book possible but unwieldy. Rather than explode the page
> count by a factor of a hundred or so, the pages you looked at omit the
> (immediately out of date) binary encoding and show only the attributes.

I may be wrong here, but it appears to me that Thomas doesn't understand
the idea of GenAsm and specialization. I won't try to explain that
here, as Ivan can certainly do a much better job, but I think that for
what Thomas wants, at least initially, understanding what GenAsm gets
generated may be more useful, at least initially, than the specifics of
the model dependent encoding. Of course, he still needs to understand
basic concepts like the belt, etc.

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

Re: "valid bits" for registers

<saakj7$12hh$1@gioia.aioe.org>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!vHj1Qq4NDvrye2NzbaJyCQ.user.gioia.aioe.org.POSTED!not-for-mail
From: mess...@bottle.org (Guillaume)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Tue, 15 Jun 2021 18:30:30 +0200
Organization: Aioe.org NNTP Server
Lines: 23
Message-ID: <saakj7$12hh$1@gioia.aioe.org>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
NNTP-Posting-Host: vHj1Qq4NDvrye2NzbaJyCQ.user.gioia.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Complaints-To: abuse@aioe.org
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Content-Language: fr
X-Notice: Filtered by postfilter v. 0.9.2
 by: Guillaume - Tue, 15 Jun 2021 16:30 UTC

Le 12/06/2021 à 22:28, Thomas Koenig a écrit :
> Advantages: There would be no need to write back the value
> to the physical register file, saving effort (and possibly
> making analysis easer).

I don't really get it. In what kind of microarchitecture would a
register be written back if it had not been modified anyway?

> Saving registers on function entry could be restricted on those
> which are actually valid, the same would hold for a context switch.

Yeah, why not. Except...

You need to figure out what a valid register means exactly. It's not
hard to figure that all registers would be flagged invalid upon 'reset'.
But once a given register has been written to, what exactly would make
it "invalid" again? This doesn't make much sense to me. I think I've
read in a later post that a register being "read" would then be flagged
invalid? That just doesn't work. In a normal execution flow, it's
extremely common that registers are read several times. If you don't
allow this, you would have to make the compiled code extremely inefficient.

So all in all, I just don't get it.

Re: "valid bits" for registers

<33f3d387-ad37-4212-9a48-cbb1ea9b14c6n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:b1c5:: with SMTP id a188mr503932qkf.378.1623774949924;
Tue, 15 Jun 2021 09:35:49 -0700 (PDT)
X-Received: by 2002:a9d:7d05:: with SMTP id v5mr154978otn.240.1623774946681;
Tue, 15 Jun 2021 09:35:46 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Tue, 15 Jun 2021 09:35:46 -0700 (PDT)
In-Reply-To: <sa9t38$uig$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:bdeb:cdc9:a12:a1bb;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:bdeb:cdc9:a12:a1bb
References: <sa35cv$g52$1@newsreader4.netcologne.de> <sa6qi0$a18$1@gioia.aioe.org>
<sa6rps$uiu$1@newsreader4.netcologne.de> <sa6v1m$h1$1@dont-email.me>
<sa822v$ois$1@newsreader4.netcologne.de> <sa84mc$6em$1@dont-email.me> <sa9t38$uig$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <33f3d387-ad37-4212-9a48-cbb1ea9b14c6n@googlegroups.com>
Subject: Re: "valid bits" for registers
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Tue, 15 Jun 2021 16:35:49 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Tue, 15 Jun 2021 16:35 UTC

On Tuesday, June 15, 2021 at 4:49:30 AM UTC-5, Thomas Koenig wrote:
> Ivan Godard <iv...@millcomputing.com> schrieb:
> > On 6/14/2021 10:02 AM, Thomas Koenig wrote:
> >> Ivan Godard <iv...@millcomputing.com> schrieb:
> >>
> >>> Well BTAIM, you have human doc available. What kind of presentation
> >>> would you consider "readily available"?
> >>
> >> First, thanks for the offer.
> >>
> >> Some sort of document that it is possible to browse through without
> >> having to go through more than 20 hours of videos would be
> >> great - some sort of introductory text (or presentation) about the
> >> principles, what instructions look like, how they are processed,
> >> what serves as registers, what metadata there is and many other
> >> points that you and others have alluded to on this group.
> >>
> >> Something like Mitch's document about the My 66000 operations
> >> (which really explained the special points about his architecture
> >> well) or even the overview chapters in the POWER ISA, for
> >> example, would be great.
> >>
> >> I come at ISAs from a compiler perspective - I like to see how
> >> code (preferably for my personal favorite, modern Fortran) is and
> >> should be translated, and how well this works. I would also like
> >> to be able to read assembler code, and see how well this works,
> >> or where the compiler should be improved. For this, I need some
> >> kind of mental model of what happens in a CPU. And, of course,
> >> I am all in favor of ISAs which allow efficient operation.
> >>
> >> So... anything shorter than the vidos available? I don't know
> >> how self-explanatory the slides from your talks are, maybe
> >> these could be published?
> >>
> >
> > The slides are and have always been published; you will find them next
> > to the videos on millcomputing.com. You need real Powerpoint; the clones
> > choke on animations (or at least they used to; try and see if you want).
> >
> > An introductory Mill book would be very valuable I agree.
> I don't think it would have to be a whole book; some sort of
> technical report or white paper would be quite helpful already.
> >There is a
> > great dearth of tech writers though, especially those who will work
> > sweat equity. If you would like to help fix this problem please send me
> > a note to ivan at the millcomputing site and describe your prior
> > experience writing such books.
> Thanks, but I am a technical writer (I wrote a couple of chapters
> for a couple of books, and some patents, where the focus far less on
> legibility). I also don't really have a lot of time due to a
> full-time day job :-)
> > For Fortran, you compile with flang into LLVM. The resulting IR is the
> > same as you get from C or C++.
> Sure.
>
> The interesting question is how well the IR matches the semantics
> of the language in question, and the semantics of the machine language.
<
Having read my share of LLVM IR after doing the My 66000 ISA, I can
state that the IR is a superset of your typical RISC machine. IT has
the majority of RISC ISA and PHI operators--which tell the back end to
allocate all of the PHI operand to the same register. Kind of clean and
neat at the same time.
>
> For example, Fortran has array expressions which need to be
> translated into the IR. If the IR does not have arrays as
> first-class citizens, this requires scalarization, i.e. translation
> into scalar loops, which is a) hairy and b) prone to add additional
> restrictions which Fortran language definition does not have: it
> needs to chose an iteration order or loop ordering, which may not
> be optimum and which the middle end (which is usually based on
> some sort of C-like model) would need to figure out and correct.
>
> This is the reason, for example, why I added loop interchange to
> FORALL and DO CONCURRENT in gortran, because the gcc middle end
> didn't get it right.
> >As a practical matter, to understand the
> > code gen you must learn to read LLVM IR; it's well documented and you
> > can run all the tests you want. The Mill itself is an ISA, and doesn't
> > care about the source language used so long as LLVM will eat it. The
> > Mill tool chain has made no front-end or middle-end modifications to
> > standard LLVM.
> And the question then is... how information much is lost along that way?
>
> My usual way is to look at source code and assembly output,
> and see what goes wrong. If the assembler is readable
> (and I have a mental model of what the processor does) then
> misoptimizations (or wrong code) can be blindingly obvious,
> such as in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100622
> (which we discussed here a bit ago, and which has been fixed in
> the meantime on gcc trunk by deletion of code, always the best way).
>
> There are also things where an ISA matches very well to language
> construct. For example, for My 66000, I would stronlgy expect
>
> WHERE (a>0)
> a = a + 3
> ELSEWHERE
> a = a + b
> END WHERE
>
> to be translated into a VEC / LOOP pair with a predicate inside.
> If not, I would open a missed-optimization bug report.
> > Not much I can do about the plenitude of instructions; there are over a
> > thousand models, because we use an attributed definition where most
> > other docs just define the major opcodes and leave the attributes to the
> > fine print. Still, it is true that the Mill is far more orthogonal than
> > most, which leads to more instructions but simpler hardware.
> I don't mind many instructions (or I would never look at POWER in my
> life :-)
> > For example, all operations that can cause integer overflow come in four
> > flavors of overflow handling behavior. Perhaps you would prefer to see
> > one integer add page that mentions a two bit overflow field in passing.
> > Our doc uses four pages, one for each, because they are intended for use
> > by people looking up a hex pattern from a code dump, not for casual
> > browsers.
> Is that information available somewhere? What I have found so far is
> http://millcomputing.com/wiki/Instruction_Set but that is not enough
> to get a grip on what happens, and nothing I found specifically
> mentions encodings.
>
> [...]
> > However, it's not the instruction set that distinguishes a Mill;
> > although there are lots of changes rung on the basics, there are very
> > few instructions that you wouldn't recognize in the next RISC off a bus.
> > What is different is the macro architecture. We have found that
> > explaining temporal addressing, split-stream encoding, virtual zero,
> > phasing... the list is not short - requires pictures, and specifically
> > animations. So look at the slides. My benign commentary in the videos
> > may be helpful if you need more. If that fails too then I'm here for
> > concrete questions.
> I'll look at it, and see if it is enough to form that mental
> picture. Thanks!
<
Since you are a "bit" familiar with source to asm relationships, you
should be able to read you way to LLVM IR as a half way step.

Re: "valid bits" for registers

<8a888f65-5357-4036-b4ae-6fa358800dfen@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ad4:596c:: with SMTP id eq12mr6014347qvb.30.1623775152038; Tue, 15 Jun 2021 09:39:12 -0700 (PDT)
X-Received: by 2002:a05:6830:3089:: with SMTP id f9mr158240ots.276.1623775151753; Tue, 15 Jun 2021 09:39:11 -0700 (PDT)
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsfeed.xs4all.nl!newsfeed9.news.xs4all.nl!tr3.eu1.usenetexpress.com!feeder.usenetexpress.com!tr1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Tue, 15 Jun 2021 09:39:11 -0700 (PDT)
In-Reply-To: <saakj7$12hh$1@gioia.aioe.org>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:bdeb:cdc9:a12:a1bb; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:bdeb:cdc9:a12:a1bb
References: <sa35cv$g52$1@newsreader4.netcologne.de> <saakj7$12hh$1@gioia.aioe.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8a888f65-5357-4036-b4ae-6fa358800dfen@googlegroups.com>
Subject: Re: "valid bits" for registers
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Tue, 15 Jun 2021 16:39:12 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 33
 by: MitchAlsup - Tue, 15 Jun 2021 16:39 UTC

On Tuesday, June 15, 2021 at 11:30:38 AM UTC-5, Guillaume wrote:
> Le 12/06/2021 à 22:28, Thomas Koenig a écrit :
> > Advantages: There would be no need to write back the value
> > to the physical register file, saving effort (and possibly
> > making analysis easer).
> I don't really get it. In what kind of microarchitecture would a
> register be written back if it had not been modified anyway?
<
x86 where one has a shift and a shift count of 0. In this case the write back
is there to signal that the shift is complete and anyone dependent upon it
can now proceed.
<
> > Saving registers on function entry could be restricted on those
> > which are actually valid, the same would hold for a context switch.
<
> Yeah, why not. Except...
<
How does the code at the entry point know this ? Are you going to
test and branch around the store ?
>
> You need to figure out what a valid register means exactly. It's not
> hard to figure that all registers would be flagged invalid upon 'reset'.
> But once a given register has been written to, what exactly would make
> it "invalid" again? This doesn't make much sense to me. I think I've
> read in a later post that a register being "read" would then be flagged
> invalid? That just doesn't work. In a normal execution flow, it's
> extremely common that registers are read several times. If you don't
> allow this, you would have to make the compiled code extremely inefficient.
>
> So all in all, I just don't get it.

Re: "valid bits" for registers

<saal6a$mp0$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Tue, 15 Jun 2021 09:40:42 -0700
Organization: A noiseless patient Spider
Lines: 164
Message-ID: <saal6a$mp0$1@dont-email.me>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<sa6qi0$a18$1@gioia.aioe.org> <sa6rps$uiu$1@newsreader4.netcologne.de>
<sa6v1m$h1$1@dont-email.me> <sa822v$ois$1@newsreader4.netcologne.de>
<sa84mc$6em$1@dont-email.me> <sa9t38$uig$1@newsreader4.netcologne.de>
<saa6fn$7db$1@dont-email.me> <saai3t$u7a$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 15 Jun 2021 16:40:43 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="28e4c40b8066a433dfec7c133e0d2392";
logging-data="23328"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18XP9fW4hKgj0ia7NRQ0sy5"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:9/s6SXLpjcdrX2Xc/gCTxUTqlmk=
In-Reply-To: <saai3t$u7a$1@dont-email.me>
Content-Language: en-US
 by: Ivan Godard - Tue, 15 Jun 2021 16:40 UTC

On 6/15/2021 8:48 AM, Stephen Fuld wrote:
> On 6/15/2021 5:29 AM, Ivan Godard wrote:
>> On 6/15/2021 2:49 AM, Thomas Koenig wrote:
>>> Ivan Godard <ivan@millcomputing.com> schrieb:
>>>> On 6/14/2021 10:02 AM, Thomas Koenig wrote:
>>>>> Ivan Godard <ivan@millcomputing.com> schrieb:
>>>>>
>>>>>> Well BTAIM, you have human doc available. What kind of presentation
>>>>>> would you consider "readily available"?
>>>>>
>>>>> First, thanks for the offer.
>>>>>
>>>>> Some sort of document that it is possible to browse through without
>>>>> having to go through more than 20 hours of videos would be
>>>>> great - some sort of introductory text (or presentation) about the
>>>>> principles, what instructions look like, how they are processed,
>>>>> what serves as registers, what metadata there is and many other
>>>>> points that you and others have alluded to on this group.
>>>>>
>>>>> Something like Mitch's document about the My 66000 operations
>>>>> (which really explained the special points about his architecture
>>>>> well) or even the overview chapters in the POWER ISA, for
>>>>> example, would be great.
>>>>>
>>>>> I come at ISAs from a compiler perspective - I like to see how
>>>>> code (preferably for my personal favorite, modern Fortran) is and
>>>>> should be translated, and how well this works.  I would also like
>>>>> to be able to read assembler code, and see how well this works,
>>>>> or where the compiler should be improved.  For this, I need some
>>>>> kind of mental model of what happens in a CPU.  And, of course,
>>>>> I am all in favor of ISAs which allow efficient operation.
>>>>>
>>>>> So... anything shorter than the vidos available?  I don't know
>>>>> how self-explanatory the slides from your talks are, maybe
>>>>> these could be published?
>>>>>
>>>>
>>>> The slides are and have always been published; you will find them next
>>>> to the videos on millcomputing.com. You need real Powerpoint; the
>>>> clones
>>>> choke on animations (or at least they used to; try and see if you
>>>> want).
>>>>
>>>> An introductory Mill book would be very valuable I agree.
>>>
>>> I don't think it would have to be a whole book; some sort of
>>> technical report or white paper would be quite helpful already.
>>>
>>>> There is a
>>>> great dearth of tech writers though, especially those who will work
>>>> sweat equity. If you would like to help fix this problem please send me
>>>> a note to ivan at the millcomputing site and describe your prior
>>>> experience writing such books.
>>>
>>> Thanks, but I am a technical writer (I wrote a couple of chapters
>>> for a couple of books, and some patents, where the focus far less on
>>> legibility).  I also don't really have a lot of time due to a
>>> full-time day job :-)
>>>
>>>> For Fortran, you compile with flang into LLVM. The resulting IR is the
>>>> same as you get from C or C++.
>>>
>>> Sure.
>>>
>>> The interesting question is how well the IR matches the semantics
>>> of the language in question, and the semantics of the machine language.
>>>
>>> For example, Fortran has array expressions which need to be
>>> translated into the IR.  If the IR does not have arrays as
>>> first-class citizens, this requires scalarization, i.e. translation
>>> into scalar loops, which is a) hairy and b) prone to add additional
>>> restrictions which Fortran language definition does not have: it
>>> needs to chose an iteration order or loop ordering, which may not
>>> be optimum and which the middle end (which is usually based on
>>> some sort of C-like model) would need to figure out and correct.
>>>
>>> This is the reason, for example, why I added loop interchange to
>>> FORALL and DO CONCURRENT in gortran, because the gcc middle end
>>> didn't get it right.
>>
>> And I'm sure your changes were beneficial, but they are all above the
>> ISA level. We take what LLVM gives us; if the user isn't satisfied
>> with LLVM then it's not for us to fix. If they persuade LLVM to fix
>> their issue, and the fix forces a change to the IR, then our software
>> will track that change.
>>
>>>> As a practical matter, to understand the
>>>> code gen you must learn to read LLVM IR; it's well documented and you
>>>> can run all the tests you want. The Mill itself is an ISA, and doesn't
>>>> care about the source language used so long as LLVM will eat it. The
>>>> Mill tool chain has made no front-end or middle-end modifications to
>>>> standard LLVM.
>>>
>>> And the question then is... how information much is lost along that way?
>>>
>>> My usual way is to look at source code and assembly output,
>>> and see what goes wrong.  If the assembler is readable
>>> (and I have a mental model of what the processor does) then
>>> misoptimizations (or wrong code) can be blindingly obvious,
>>> such as in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100622
>>> (which we discussed here a bit ago, and which has been fixed in
>>> the meantime on gcc trunk by deletion of code, always the best way).
>>
>> The report you cite is for QOI, not architecture. In our pre-alpha
>> state we don't need QOI reports; we generate more than enough
>> ourselves :-)
>>
>>> There are also things where an ISA matches very well to language
>>> construct.  For example, for My 66000, I would stronlgy expect
>>>
>>>     WHERE (a>0)
>>>       a = a + 3
>>>     ELSEWHERE
>>>       a = a + b
>>>     END WHERE
>>>
>>> to be translated into a VEC / LOOP pair with a predicate inside.
>>> If not, I would open a missed-optimization bug report.
>>>
>>>> Not much I can do about the plenitude of instructions; there are over a
>>>> thousand models, because we use an attributed definition where most
>>>> other docs just define the major opcodes and leave the attributes to
>>>> the
>>>> fine print. Still, it is true that the Mill is far more orthogonal than
>>>> most, which leads to more instructions but simpler hardware.
>>>
>>> I don't mind many instructions (or I would never look at POWER in my
>>> life :-)
>>>
>>>> For example, all operations that can cause integer overflow come in
>>>> four
>>>> flavors of overflow handling behavior. Perhaps you would prefer to see
>>>> one integer add page that mentions a two bit overflow field in passing.
>>>> Our doc uses four pages, one for each, because they are intended for
>>>> use
>>>> by people looking up a hex pattern from a code dump, not for casual
>>>> browsers.
>>>
>>> Is that information available somewhere?  What I have found so far is
>>> http://millcomputing.com/wiki/Instruction_Set but that is not enough
>>> to get a grip on what happens, and nothing I found specifically
>>> mentions encodings.
>>>
>>> [...]
>>
>> Encodings are mechanically generated and differ for each slot of each
>> family member. During development the member configurations change
>> frequently, which can completely alter the encoding. This makes a
>> traditional ISA book possible but unwieldy. Rather than explode the
>> page count by a factor of a hundred or so, the pages you looked at
>> omit the (immediately out of date) binary encoding and show only the
>> attributes.
>
> I may be wrong here, but it appears to me that Thomas doesn't understand
> the idea of GenAsm and specialization.  I won't try to explain that
> here, as Ivan can certainly do a much better job, but I think that for
> what Thomas wants, at least initially, understanding what GenAsm gets
> generated may be more useful, at least initially, than the specifics of
> the model dependent encoding.  Of course, he still needs to understand
> basic concepts like the belt, etc.


Click here to read the complete article
Re: "valid bits" for registers

<saalpr$s0s$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Tue, 15 Jun 2021 09:51:07 -0700
Organization: A noiseless patient Spider
Lines: 36
Message-ID: <saalpr$s0s$1@dont-email.me>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<saakj7$12hh$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 15 Jun 2021 16:51:07 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="28e4c40b8066a433dfec7c133e0d2392";
logging-data="28700"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19seu8Mr/5mAnRs231u/ozu"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:3ppVIldP36rimDfNWqHG+K9R8Jk=
In-Reply-To: <saakj7$12hh$1@gioia.aioe.org>
Content-Language: en-US
 by: Ivan Godard - Tue, 15 Jun 2021 16:51 UTC

On 6/15/2021 9:30 AM, Guillaume wrote:
> Le 12/06/2021 à 22:28, Thomas Koenig a écrit :
>> Advantages: There would be no need to write back the value
>> to the physical register file, saving effort (and possibly
>> making analysis easer).
>
> I don't really get it. In what kind of microarchitecture would a
> register be written back if it had not been modified anyway?
>
>> Saving registers on function entry could be restricted on those
>> which are actually valid, the same would hold for a context switch.
>
> Yeah, why not. Except...
>
> You need to figure out what a valid register means exactly. It's not
> hard to figure that all registers would be flagged invalid upon 'reset'.
> But once a given register has been written to, what exactly would make
> it "invalid" again? This doesn't make much sense to me. I think I've
> read in a later post that a register being "read" would then be flagged
> invalid? That just doesn't work. In a normal execution flow, it's
> extremely common that registers are read several times. If you don't
> allow this, you would have to make the compiled code extremely inefficient.
>
> So all in all, I just don't get it.

There have been many efforts to have a "last use" signal of some kind in
the instructions. It usually runs foul of encoding constraints, as in so
many shoehorning efforts here and elsewhere. Some feature that costs a
bit in each register specifier needs to have some glaring advantage and
none has been found.

An alternative is to have registers implicitly "time out" in some way;
the belt is an example. Another is to partition the register banks by
lifetime: maybe one bank expires on first use, another doesn't expire.
Such a scheme implies a NURA architecture; perhaps something of the sort
would fit into Mitch's SuperPDP11.

Re: "valid bits" for registers

<saalt3$h3j$1@newsreader4.netcologne.de>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Tue, 15 Jun 2021 16:52:51 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <saalt3$h3j$1@newsreader4.netcologne.de>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<sa6qi0$a18$1@gioia.aioe.org> <sa6rps$uiu$1@newsreader4.netcologne.de>
<sa6v1m$h1$1@dont-email.me> <sa822v$ois$1@newsreader4.netcologne.de>
<sa84mc$6em$1@dont-email.me> <sa9t38$uig$1@newsreader4.netcologne.de>
Injection-Date: Tue, 15 Jun 2021 16:52:51 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd6:26b3:0:7285:c2ff:fe6c:992d";
logging-data="17523"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Tue, 15 Jun 2021 16:52 UTC

Thomas Koenig <tkoenig@netcologne.de> schrieb:

> Thanks, but I am a technical writer

That should have read "I am not a technical writer".

Re: "valid bits" for registers

<saan7c$8e5$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: sfu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Tue, 15 Jun 2021 10:15:22 -0700
Organization: A noiseless patient Spider
Lines: 27
Message-ID: <saan7c$8e5$1@dont-email.me>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<saakj7$12hh$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 15 Jun 2021 17:15:24 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="8888e8f6b5f48b3587fd973c1c9dcb7e";
logging-data="8645"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18oWh3KMs50Ko47AQRiPzMxTVNTaD27XS8="
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:rUYUMp8G57Ditw8hHNxVEvLNJw4=
In-Reply-To: <saakj7$12hh$1@gioia.aioe.org>
Content-Language: en-US
 by: Stephen Fuld - Tue, 15 Jun 2021 17:15 UTC

On 6/15/2021 9:30 AM, Guillaume wrote:
> Le 12/06/2021 à 22:28, Thomas Koenig a écrit :
>> Advantages: There would be no need to write back the value
>> to the physical register file, saving effort (and possibly
>> making analysis easer).
>
> I don't really get it. In what kind of microarchitecture would a
> register be written back if it had not been modified anyway?
>
>> Saving registers on function entry could be restricted on those
>> which are actually valid, the same would hold for a context switch.
>
> Yeah, why not. Except...
>
> You need to figure out what a valid register means exactly. It's not
> hard to figure that all registers would be flagged invalid upon 'reset'.
> But once a given register has been written to, what exactly would make
> it "invalid" again?

How about you have started the execution of a load instruction, but the
memory system hasn't yet returned the value? You don't want to use the
"old"/existing value, but the new value isn't available yet.

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

Re: "valid bits" for registers

<56baa3d2-217b-4c90-bac5-bf8c7be03080n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:550d:: with SMTP id j13mr720421qtq.131.1623778276187;
Tue, 15 Jun 2021 10:31:16 -0700 (PDT)
X-Received: by 2002:a9d:704b:: with SMTP id x11mr327950otj.110.1623778275965;
Tue, 15 Jun 2021 10:31:15 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Tue, 15 Jun 2021 10:31:15 -0700 (PDT)
In-Reply-To: <saalt3$h3j$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:bdeb:cdc9:a12:a1bb;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:bdeb:cdc9:a12:a1bb
References: <sa35cv$g52$1@newsreader4.netcologne.de> <sa6qi0$a18$1@gioia.aioe.org>
<sa6rps$uiu$1@newsreader4.netcologne.de> <sa6v1m$h1$1@dont-email.me>
<sa822v$ois$1@newsreader4.netcologne.de> <sa84mc$6em$1@dont-email.me>
<sa9t38$uig$1@newsreader4.netcologne.de> <saalt3$h3j$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <56baa3d2-217b-4c90-bac5-bf8c7be03080n@googlegroups.com>
Subject: Re: "valid bits" for registers
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Tue, 15 Jun 2021 17:31:16 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Tue, 15 Jun 2021 17:31 UTC

On Tuesday, June 15, 2021 at 11:52:53 AM UTC-5, Thomas Koenig wrote:
> Thomas Koenig <tko...@netcologne.de> schrieb:
> > Thanks, but I am a technical writer
> That should have read "I am not a technical writer".
<
Would it be rude of me to point out that that is bit more than a minor typo ?

Re: "valid bits" for registers

<saaoem$iva$1@newsreader4.netcologne.de>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Tue, 15 Jun 2021 17:36:22 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <saaoem$iva$1@newsreader4.netcologne.de>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<sa6qi0$a18$1@gioia.aioe.org> <sa6rps$uiu$1@newsreader4.netcologne.de>
<sa6v1m$h1$1@dont-email.me> <sa822v$ois$1@newsreader4.netcologne.de>
<sa84mc$6em$1@dont-email.me> <sa9t38$uig$1@newsreader4.netcologne.de>
<saalt3$h3j$1@newsreader4.netcologne.de>
<56baa3d2-217b-4c90-bac5-bf8c7be03080n@googlegroups.com>
Injection-Date: Tue, 15 Jun 2021 17:36:22 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd6:26b3:0:7285:c2ff:fe6c:992d";
logging-data="19434"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Tue, 15 Jun 2021 17:36 UTC

MitchAlsup <MitchAlsup@aol.com> schrieb:
> On Tuesday, June 15, 2021 at 11:52:53 AM UTC-5, Thomas Koenig wrote:
>> Thomas Koenig <tko...@netcologne.de> schrieb:
>> > Thanks, but I am a technical writer
>> That should have read "I am not a technical writer".
><
> Would it be rude of me to point out that that is bit more than a minor typo ?

No, please go ahead.

Re: "valid bits" for registers

<8bccc81c-c8f0-4bda-8736-8198a74158bbn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:5f4e:: with SMTP id y14mr886418qta.253.1623780918383;
Tue, 15 Jun 2021 11:15:18 -0700 (PDT)
X-Received: by 2002:a05:6808:352:: with SMTP id j18mr4038253oie.122.1623780918121;
Tue, 15 Jun 2021 11:15:18 -0700 (PDT)
Path: i2pn2.org!i2pn.org!paganini.bofh.team!usenet.pasdenom.info!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Tue, 15 Jun 2021 11:15:17 -0700 (PDT)
In-Reply-To: <saaoem$iva$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:bdeb:cdc9:a12:a1bb;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:bdeb:cdc9:a12:a1bb
References: <sa35cv$g52$1@newsreader4.netcologne.de> <sa6qi0$a18$1@gioia.aioe.org>
<sa6rps$uiu$1@newsreader4.netcologne.de> <sa6v1m$h1$1@dont-email.me>
<sa822v$ois$1@newsreader4.netcologne.de> <sa84mc$6em$1@dont-email.me>
<sa9t38$uig$1@newsreader4.netcologne.de> <saalt3$h3j$1@newsreader4.netcologne.de>
<56baa3d2-217b-4c90-bac5-bf8c7be03080n@googlegroups.com> <saaoem$iva$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8bccc81c-c8f0-4bda-8736-8198a74158bbn@googlegroups.com>
Subject: Re: "valid bits" for registers
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Tue, 15 Jun 2021 18:15:18 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Tue, 15 Jun 2021 18:15 UTC

On Tuesday, June 15, 2021 at 12:36:24 PM UTC-5, Thomas Koenig wrote:
> MitchAlsup <Mitch...@aol.com> schrieb:
> > On Tuesday, June 15, 2021 at 11:52:53 AM UTC-5, Thomas Koenig wrote:
> >> Thomas Koenig <tko...@netcologne.de> schrieb:
> >> > Thanks, but I am a technical writer
> >> That should have read "I am not a technical writer".
> ><
> > Would it be rude of me to point out that that is bit more than a minor typo ?
> No, please go ahead.
<
At this point is no longer seem necessary.

Re: "valid bits" for registers

<saas38$jgn$1@gioia.aioe.org>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!vHj1Qq4NDvrye2NzbaJyCQ.user.gioia.aioe.org.POSTED!not-for-mail
From: mess...@bottle.org (Guillaume)
Newsgroups: comp.arch
Subject: Re: "valid bits" for registers
Date: Tue, 15 Jun 2021 20:38:32 +0200
Organization: Aioe.org NNTP Server
Lines: 15
Message-ID: <saas38$jgn$1@gioia.aioe.org>
References: <sa35cv$g52$1@newsreader4.netcologne.de>
<saakj7$12hh$1@gioia.aioe.org>
<8a888f65-5357-4036-b4ae-6fa358800dfen@googlegroups.com>
NNTP-Posting-Host: vHj1Qq4NDvrye2NzbaJyCQ.user.gioia.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Complaints-To: abuse@aioe.org
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
X-Notice: Filtered by postfilter v. 0.9.2
Content-Language: fr
 by: Guillaume - Tue, 15 Jun 2021 18:38 UTC

Le 15/06/2021 à 18:39, MitchAlsup a écrit :
> On Tuesday, June 15, 2021 at 11:30:38 AM UTC-5, Guillaume wrote:
>> Le 12/06/2021 à 22:28, Thomas Koenig a écrit :
>>> Advantages: There would be no need to write back the value
>>> to the physical register file, saving effort (and possibly
>>> making analysis easer).
>> I don't really get it. In what kind of microarchitecture would a
>> register be written back if it had not been modified anyway?
> <
> x86 where one has a shift and a shift count of 0. In this case the write back
> is there to signal that the shift is complete and anyone dependent upon it
> can now proceed.

That's really an oddball here. How worth it can it be to go through such
extents just to marginally improve I'm not even sure what in the end?

Pages:12
server_pubkey.txt

rocksolid light 0.9.8
clearnet tor